package br.unirio.webdisco.dao.bo;

import java.util.List;

import br.unirio.webdisco.dao.conn.BasePostgresDAO;
import br.unirio.webdisco.dao.conn.DAOFactory;
import br.unirio.webdisco.dao.impl.UsuarioPostgresDAO;
import br.unirio.webdisco.entity.Usuario;
import br.unirio.webdisco.dao.bo.BaseBO;

public class UsuarioBO extends BaseBO<Usuario> {
	private static UsuarioBO instancia;
	
	public static UsuarioBO getInstance() {
		if (instancia == null)
			instancia = new UsuarioBO();
		return instancia;
	}
	
	public Usuario consultarUsuario(String u, String p) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		return ((UsuarioPostgresDAO) dao).consultarUsuario(u, p);
	}

	@Override
	public void incluir(Usuario usuario) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		dao.incluir(usuario);
	}

	@Override
	public void alterar(Usuario usuario) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		dao.alterar(usuario);
	}

	@Override
	public void excluir(Usuario usuario) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		dao.excluir(usuario);
	}

	@Override
	public Integer count() throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		return dao.count();
	}
	
	@Override
	public List<Usuario> listar(Integer paginaTamanho, Integer paginaAtual) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		return dao.listar(paginaTamanho, paginaAtual);
	}

	@Override
	public Usuario consultarPorId(Integer id) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		return dao.consultarPorId(id);
	}

	@Override
	public List<Usuario> consultar(String parametros) throws Exception {
		BasePostgresDAO<Usuario> dao = DAOFactory.getInstance().getUsuarioDAO();
		return dao.consultar(parametros);
	}
}
